package com.atguigu.bigdata.scala.chapter10

object Scala02_Transform {

    def main(args: Array[String]): Unit = {

        // TODO 隐式转换
        // 违背了OCP开发原则
        // 不修改下面的代码，也能让程序执行通过
        implicit def transform( d : Double ): Int = {
            d.toInt
        }

        // 当程序出现编译错误的时候，编译器会尝试在整个的作用域范围内，查找
        // 能够让当前错误程序编译通过的转换逻辑，这种操作称之为二次编译
        // 这个转换逻辑必须能让编译器识别，这个转换由编译器自动完成，所以称之为隐式转换
        // 在转换逻辑前增加关键字implicit，让编译器识别
        // 如果一个函数声明了implicit，那么这个函数称之为隐式函数

        //**********************************************
        val age : Int = thirdPart_Age()
        println("第三方程序提供的年龄数据为 ：" + age)
        //**********************************************

    }

    def thirdPart_Age(): Double = {
        20.5
    }
}
